using System;
using System.Collections.Generic;
using System.Text;

namespace Circo.Essentials.Persistence.Attribute
{
	[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
	public class ColumnAttribute : System.Attribute
	{

		public ColumnAttribute()
		{
			_name = null;
		}

		public bool EntityReference
		{
			get { return _entityReference; }
			set { _entityReference = value; }
		}

		public bool Persistable
		{
			get { return _persistable; }
			set { _persistable = value; }
		}

		public System.Data.DbType DBType
		{
			get { return _dbType; }
			set
			{ _dbType = value; }
		}

		public bool IsIdentity
		{
			get { return _isIdentity; }
			set { _isIdentity = value; }
		}

		public int Length
		{
			get { return _length; }
			set { _length = value; }
		}

		public int Precision
		{
			get { return _precision; }
			set { _precision = value; }
		}

		public int Scale
		{
			get { return _scale; }
			set { _scale = value; }
		}

		public string Name
		{
			get { return _name; }
			set { _name = value; }
		}

		public bool FKReference
		{
			get { return _fkReference; }
			set { _fkReference = value; }
		}

		public bool CollectionReference
		{
			get { return _collectionReference; }
			set { _collectionReference = value; }
		}

		public bool IsUnicode
		{
			get { return _isUnicode; }
			set { _isUnicode = value; }
		}

		public bool FixedLength
		{
			get { return _fixedLength; }
			set { _fixedLength = value; }
		}

		public string FKName
		{
			get { return _fkName; }
			set { _fkName = value; }
		}

		public bool IsLogicalKey
		{
			get { return _isLogicalKey; }
			set { _isLogicalKey = value; }
		}

		public bool IsAuditUserField
		{
			get { return _isAuditUserField; }
			set { _isAuditUserField = value; }
		}

		public bool IsAuditDateField
		{
			get { return _isAuditDateField; }
			set { _isAuditDateField = value; }
		}

		public bool IsAuditMachineField
		{
			get { return _isAuditMachineField; }
			set { _isAuditMachineField = value; }
		}

		public bool IsAuditActionField
		{
			get { return _isAuditActionField; }
			set { _isAuditActionField = value; }
		}

		public bool IsAuditExtraInfoField
		{
			get { return _isAuditExtraInfoField; }
			set { _isAuditExtraInfoField = value; }
		}

		public bool IsNullable
		{
			get { return _isNullable; }
			set { _isNullable = value; }
		}

		private System.Data.DbType _dbType;
		private int _length;
		private int _precision;
		private int _scale;
		private bool _fixedLength = true;
		private bool _isIdentity = false;
		private bool _isUnicode = false;
		private bool _isLogicalKey = false;
		private bool _fkReference = false;
		private bool _entityReference = false;
		private bool _persistable = true;
		private bool _collectionReference = false;
		private string _name;
		private string _fkName;
		private bool _isAuditUserField;
		private bool _isAuditDateField;
		private bool _isAuditMachineField;
		private bool _isAuditActionField;
		private bool _isAuditExtraInfoField;
		private bool _isNullable;

	}

}